home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / ibmodem.arc / IBMODEM.BAS next >
Encoding:
BASIC Source File  |  1986-04-25  |  15.2 KB  |  348 lines

  1. 60 '
  2. 70 '                 In order for the hang-up command to work,
  3. 80 '                 you MUST flip switch #1 on the modem UP.
  4. 85 '                      (You should have it up anyway.)
  5. 86 '                SWITCH SETTINGS ON SMARTMODEM UUDDDDDD
  6. 87 '
  7. 90 SCREEN 0,0,0,0 : LOCATE ,,1 : WIDTH 80 : KEY OFF : CLOSE
  8. 95 ON ERROR GOTO 1000
  9. 100             ' Set Variable Defaults ---------------------------------------
  10. 110 DEFINT A-Z                    ' All Variables Are Integers
  11. 120 ONLINE = -1                   ' Start On-Line
  12. 130 EVEN   = -1                   ' Even Parity, 7 Bit Word Structure
  13. 140 PRINTER=  0                   ' Printer Off
  14. 150 DISK   =  0                   ' Disk(s) Off
  15. 160 LOCAL  =  0 : HOST=0          ' Echoes  Off
  16. 170 BK$=CHR$(29)+CHR$(32)+CHR$(29)' Clean Backspace For Local PC
  17. 180 SOH$=CHR$(1)  :  EOT$=CHR$(4)  : ACK$=CHR$(6)
  18. 190 XON$=CHR$(17) : XOFF$=CHR$(19) : NAK$=CHR$(21) : CAN$=CHR$(24)
  19. 200             ' Define Funtion Keys -----------------------------------------
  20. 210 KEY(1)ON:ON KEY(1)GOSUB 3100
  21. 220 KEY(2)ON:ON KEY(2)GOSUB 3200
  22. 230 KEY(3)ON:ON KEY(3)GOSUB 3300
  23. 240 KEY(4)ON:ON KEY(4)GOSUB 3400
  24. 250 KEY(5)ON:ON KEY(5)GOSUB 3500
  25. 260 KEY(6)ON:ON KEY(6)GOSUB 3600
  26. 270 KEY(7)ON:ON KEY(7)GOSUB 3700
  27. 280 KEY(8)ON:ON KEY(8)GOSUB 3800
  28. 290 KEY(9)ON:ON KEY(9)GOSUB 3900
  29. 295 KEY(10)ON:ON KEY(10)GOSUB 4000
  30. 297 DEF SEG:POKE 106,0
  31. 300             ' Define I/O Channels -----------------------------------------
  32. 310 OPEN "R",#1,"COM1:"          ' Modem ====> File #1
  33. 320 OPEN "O",#2,"LPT1:"          ' Printer ==> File #2
  34. 330 PRINT #1,"ATE1QTS11=50"      ' Initialize Modem
  35. 340 FOR X=1 TO 1000 : NEXT : GOSUB 25000 : GOSUB 800
  36. 400             ' Keyboard Driven Terminal Loop -------------------------------
  37. 410 WHILE ONLINE
  38. 420    X$=INKEY$:IF X$<>"" THEN LOCATE ,,1:PRINT #1,X$;:IF LOCAL THEN GOSUB 470
  39. 430    GOSUB 500
  40. 440 WEND
  41. 450 IF NOT ONLINE THEN 450  ' Off-Line Wait Loop
  42. 460 GOTO 410
  43. 470 IF POS(0)>1 AND X$=CHR$(8) THEN PRINT BK$; ELSE PRINT X$;
  44. 480 RETURN
  45. 500             ' Main Communication Loop -------------------------------------
  46. 510 WHILE NOT EOF(1)
  47. 520    X$=INKEY$ : IF X$<>"" THEN LOCATE ,,1 : PRINT #1,X$;
  48. 530    Y$=INPUT$(LOC(1),#1) : IF DISK THEN PRINT #3,Y$;
  49. 540    FOR I=1 TO LEN(Y$)
  50. 550       J=ASC(MID$(Y$,I,1)) : IF J=10 THEN 590 ELSE IF J=8 THEN 595
  51. 560       PRINT CHR$(J); : IF HOST THEN PRINT #1,CHR$(J);
  52. 570    NEXT : IF PRINTER THEN PRINT #2,Y$;
  53. 580 WEND : RETURN
  54. 590 MID$(Y$,I,1)=" " : GOTO 570
  55. 595 IF POS(0)>1 THEN PRINT BK$; : IF HOST THEN PRINT #1,CHR$(J);
  56. 597 GOTO 570
  57. 800             ' Function Key Display Menu -----------------------------------
  58. 810 CLS : PRINT TAB(15);"MENU FOR FUNCTION KEYS" : PRINT
  59. 820 PRINT TAB(10)"Key 1 . . . . . . To Toggle Modem Online/Offline
  60. 830 PRINT TAB(10)"Key 2 . . . . . . To Toggle On/Off LOCAL Echo
  61. 840 PRINT TAB(10)"Key 3 . . . . . . To Toggle On/Off HOST  Echo
  62. 850 PRINT TAB(10)"Key 4 . . . . . . To Dial A Number
  63. 860 PRINT TAB(10)"Key 5 . . . . . . To Display This Menu
  64. 870 PRINT TAB(10)"Key 6 . . . . . . To Toggle Printer On/Off
  65. 880 PRINT TAB(10)"Key 7 . . . . . . To Write To Disk From Modem
  66. 890 PRINT TAB(10)"Key 8 . . . . . . To Write To Modem From Disk
  67. 900 PRINT TAB(10)"Key 9 . . . . . . To Toggle Between E,7,1 and N,8,1 words
  68. 910 PRINT TAB(10)"Key 10. . . . . . To Return To Basic  Without Hanging-Up
  69. 920 PRINT
  70. 930 PRINT TAB(10)"Alt + Key 3 . . . To Change To 300 Baud
  71. 940 PRINT TAB(10)"Alt + Key 4 . . . To Continuously Dial A Number
  72. 950 PRINT TAB(10)"Alt + Key 5 . . . To Change To 450 Baud
  73. 960 PRINT TAB(10)"Alt + Key 6 . . . To Change To 600 Baud
  74. 970 PRINT TAB(10)"Alt + Key 7 . . . To Write To Disk With Xmodem Protocol
  75. 975 PRINT TAB(10)"Alt + Key 8 . . . To Write To Modem From Disk With Xmodem
  76. 980 PRINT TAB(10)"Alt + Key 10. . . To Hang-Up
  77. 990 PRINT : RETURN
  78. 1000            ' Error Vector Table -----------------------------------------
  79. 1010 PRINT
  80. 1020 IF ERR=24 THEN PRINT "Device Timeout" : PRINT : RESUME 400
  81. 1030 IF ERR=27 THEN PRINT "Printer"        : PRINT : RESUME 400
  82. 1040 IF ERR=57 THEN PRINT "Device I/O"     : PRINT : RESUME 400
  83. 1050 IF ERR=52 THEN PRINT "Bad Filename"           : GOTO 1150
  84. 1060 IF ERR=61 THEN PRINT "Disk Full"              : GOTO 1150
  85. 1070 IF ERR=67 THEN PRINT "Directory Full"         : GOTO 1150
  86. 1080 IF ERR=70 THEN PRINT "Disk Write Protected"   : GOTO 1150
  87. 1090 IF ERR=71 THEN PRINT "Drive Not Ready"        : GOTO 1150
  88. 1100 IF ERR=72 THEN PRINT "Disk Media Error"       : GOTO 1150
  89. 1105 IF ERR=53 AND ERL=3770 THEN RESUME 3780
  90. 1110 IF ERR=53 THEN PRINT "File Not Found" : PRINT : FILES : GOTO 1150
  91. 1120 IF ERR=58 THEN PRINT "File Already Exists" : PRINT : FILES : GOTO 1150
  92. 1130 ON ERROR GOTO 0
  93. 1150 PRINT : DISK=0 : CLOSE #3 : IF NOT ONLINE THEN GOSUB 3120
  94. 1160 LOCATE ,,1 : RESUME 400
  95. 3100            ' Service Function Key #1 -------------------------------------
  96. 3110 GOSUB 5000 : KEY(1)ON : ON S GOTO 6100,7100,8100
  97. 3120 ONLINE=NOT ONLINE : IF NOT ONLINE THEN 3140
  98. 3130 PRINT #1, XON$ : PRINT "Status :  ON  Line" : RETURN
  99. 3140 PRINT #1, XOFF$: PRINT "Status :  OFF Line" : RETURN
  100. 3200            ' Service Function Key #2 -------------------------------------
  101. 3210 GOSUB 5000 : KEY(2) ON : ON S GOTO 6200,7200,8200
  102. 3220 LOCAL=NOT LOCAL
  103. 3230 PRINT "Local Echo "; : IF LOCAL THEN PRINT "ON" ELSE PRINT "OFF"
  104. 3240 RETURN
  105. 3300            ' Service Function Key #3 -------------------------------------
  106. 3310 GOSUB 5000 : KEY(3)ON : ON S GOTO 6300,7300,8300
  107. 3320 HOST=NOT HOST
  108. 3330 PRINT "Host Echo "; : IF HOST THEN PRINT "ON" ELSE PRINT "OFF"
  109. 3340 RETURN
  110. 3400            ' Service Function Key #4 -------------------------------------
  111. 3410 GOSUB 5000 : KEY(4)ON : ON S GOTO 6400,7400,8400
  112. 3420 GOSUB 10000 : PRINT
  113. 3430 PRINT #1,"AT M1 D "+X$
  114. 3440 RETURN
  115. 3500            ' Service Function Key #5 -------------------------------------
  116. 3510 GOSUB 5000 : KEY(5)ON : ON S GOTO 6500,7500,8500
  117. 3520 GOTO 800
  118. 3600            ' Service Function Key #6  ------------------------------------
  119. 3610 GOSUB 5000 : KEY(6)ON : ON S GOTO 6600,7600,8600
  120. 3620 PRINTER=NOT PRINTER
  121. 3630 IF PRINTER THEN PRINT "Printer ON" ELSE PRINT "Printer OFF"
  122. 3640 RETURN
  123. 3700            ' Service Function Key #7 -------------------------------------
  124. 3710 GOSUB 5000 : KEY(7)ON : ON S GOTO 22000,7700,8700
  125. 3720 DISK=NOT DISK
  126. 3730 IF NOT DISK THEN CLOSE #3 : PRINT "File Closed" : RETURN
  127. 3740 GOSUB 3120
  128. 3750 PRINT "Modem   ====>>   Disk" : PRINT
  129. 3760 INPUT "ENTER FILENAME  : ",X$ : IF X$="" THEN 3790
  130. 3770 CLOSE #3 : OPEN "I",#3,X$ : ERROR 58
  131. 3780 CLOSE #3 : OPEN "O",#3,X$ : GOSUB 3120 : RETURN
  132. 3790 PRINT "Aborted" : PRINT : CLOSE #3 : GOSUB 3120 : DISK=0 : RETURN
  133. 3800            ' Service Function Key #8 -------------------------------------
  134. 3810 GOSUB 5000 : KEY(8)ON : ON S GOTO 30000,7800,8800
  135. 3820 PRINT "Disk   ====>>   Modem" : PRINT
  136. 3830 INPUT "ENTER FILENAME  : ",X$ : IF X$="" THEN 3790
  137. 3835 IF XX THEN GOTO 3845 ' BJR073183
  138. 3840 OPEN "I",#3,X$ : GOTO 3850 ' BJR073183
  139. 3845 OPEN X$ AS 3 LEN=128 : FIELD #3, 128 AS Z$ ' BJR073183
  140. 3850 PRINT "Proceed With File  ";X$;
  141. 3860 INPUT "  (Y/N)  ";Y$ : Y$=LEFT$(Y$,1)
  142. 3870 IF Y$<>"Y" AND Y$<>"y" THEN 3896
  143. 3875 IF XX THEN XX=0 : RETURN 30040
  144. 3880 WHILE NOT EOF(3)
  145. 3885   LINE INPUT #3,X$
  146. 3890   PRINT #1,X$
  147. 3892   FOR I=1 TO 1500:NEXT
  148. 3894 WEND
  149. 3896 CLOSE #3 : DISK=0 : PRINT "File Closed" : PRINT : RETURN
  150. 3900            ' Service Function Key #9 -------------------------------------
  151. 3910 GOSUB 5000 : KEY(9)ON : ON S GOTO 6900,7900,8900
  152. 3920 EVEN=NOT EVEN : IF NOT EVEN THEN 3940
  153. 3930 PRINT "Changed to Even Parity, With 7 Data Bits"
  154. 3935 OUT &H3FB,26 : RETURN ' E-7-1 Word Structure *****************************
  155. 3940 PRINT "Changed to No Parity With 8 Data Bits." '**************************
  156. 3945 OUT &H3FB,3 : RETURN ' N-8-1 Word Structure ******************************
  157. 4000            ' Service Function Key #10 ------------------------------------
  158. 4010 GOSUB 5000 : KEY(10)ON : ON S GOTO 7000,8000,9000
  159. 4020 PRINT "Pressing Key #5 will continue without hanging up."
  160. 4030 PRINT:STOP : LOCATE ,,1
  161. 5000            '  Functin Keys 1-10 Router  ----------------------------------
  162. 5010 PRINT
  163. 5020 DEF SEG=&H40:A=PEEK(&H17)
  164. 5030 IF (A AND 8)=8 THEN S=1 : DEF SEG : RETURN      'Alternate
  165. 5040 IF (A AND 2)=2 THEN S=2 : DEF SEG : RETURN      'Left Shift
  166. 5050 IF (A AND 4)=4 THEN S=3 : DEF SEG : RETURN      'Control
  167. 5060                     S=0 : DEF SEG : RETURN
  168. 6100 RETURN
  169. 6200 RETURN
  170. 6300 '-------------------------------------------------- Alt + F3 -------------
  171. 6310 PRINT "Switch to 300 Baud."
  172. 6320 ON ERROR GOTO 0
  173. 6330 R=INP(&H3FB)
  174. 6340 K=R OR 128
  175. 6350 OUT &H3FB,K
  176. 6360 OUT &H3F8,&H1
  177. 6370 OUT &H3F9,&H2
  178. 6380 OUT &H3FB,R
  179. 6390 ON ERROR GOTO 1000 : RETURN
  180. 6400 'Continuous Dialing ------------------------------- Alt + F4 -------------
  181. 6405 IF NOT EVEN THEN GOSUB 3940
  182. 6410 GOSUB 10000 : PRINT : PRINT "Continuously Dialing ";X$
  183. 6420 PRINT "Press ESC twice to abort."
  184. 6430 T=0 : PRINT : PRINT "Number of calls attempted so far : ";
  185. 6440 T=T+1 : LOCATE ,36 : PRINT T; : PRINT #1,"AT M1 D "+X$
  186. 6450 IF CHR$(27)=INKEY$ THEN 6497 ELSE WHILE NOT EOF(1)
  187. 6460 INPUT #1,Y$ : FOR X=1 TO 1000 : NEXT
  188. 6470 IF INSTR (Y$,"NO CARRIER") THEN 6440
  189. 6480 IF INSTR (Y$,"CONNECT") THEN 6490
  190. 6485 WEND  : GOTO 6450
  191. 6490 PRINT : PRINT "Connection Established."
  192. 6495 WHILE INKEY$="" : SOUND 1000,10 : SOUND 735,8 : WEND
  193. 6497 PRINT : RETURN
  194. 6500 '------------------------------------------------- Alt + F5 ------------
  195. 6510 PRINT "Switch to 450 Baud."
  196. 6520 ON ERROR GOTO 0
  197. 6530 R=INP(&H3FB)
  198. 6540 K=R OR 128
  199. 6550 OUT &H3FB,K
  200. 6560 OUT &H3F8,&H0
  201. 6570 OUT &H3F9,&H1
  202. 6580 OUT &H3FB,R
  203. 6590 ON ERROR GOTO 1000 : RETURN
  204. 6600 '-------------------------------------------------- Alt + F6 -------------
  205. 6610 PRINT "Switch to 600 Baud."
  206. 6620 ON ERROR GOTO 0
  207. 6630 R=INP(&H3FB)
  208. 6640 K=R OR 128
  209. 6650 OUT &H3FB,K
  210. 6660 OUT &H3F8,&H1
  211. 6670 OUT &H3F9,&H1
  212. 6680 OUT &H3FB,R
  213. 6690 ON ERROR GOTO 1000 : RETURN
  214. 6900 RETURN
  215. 7000 '-------------------------------------------------- Alt + F10 ------------
  216. 7010 PRINT "Hanging-Up" : RUN
  217. 7100 RETURN
  218. 7200 RETURN
  219. 7300 RETURN
  220. 7400 RETURN
  221. 7500 RETURN
  222. 7600 RETURN
  223. 7700 RETURN
  224. 7800 RETURN
  225. 7900 RETURN
  226. 8000 RETURN
  227. 8100 RETURN
  228. 8200 RETURN
  229. 8300 RETURN
  230. 8400 RETURN
  231. 8500 RETURN
  232. 8600 RETURN
  233. 8700 RETURN
  234. 8800 RETURN
  235. 8900 RETURN
  236. 9000 RETURN
  237. 10000           ' Directory  --------------------------------------------------
  238. 10010 PRINT "|------------- Directory --------------------|"
  239. 10020 PRINT ":  A>  560-0979    CAPITAL PC UG BBS         :" : D$(1)="560-0979"
  240. 10030 PRINT ":  B>  949-8848    CPSUG SOFTSIG     (IBMPC) :" : D$(2)="949-8848"
  241. 10040 PRINT ":  C>  251-6293    COMM SIG CPCUG            :" : D$(3)="251-6293"
  242. 10050 PRINT ":  D>  978-9592    BASIC HELP CPCUG   (IBMPC):" : D$(4)="978-9592"
  243. 10060 PRINT ":  E>  424-5817    MONITOR CPCUG      (IBMPC):" : D$(5)="424-5817"
  244. 10070 PRINT ":  F>  759-5049    TOM MACK'S RBBS           :" : D$(6)="759-5049"
  245. 10080 PRINT "|--------------------------------------------<"
  246. 10090 PRINT "   Enter the corresponding letter"
  247. 10100 PRINT "   or type in any phone number."         : PRINT
  248. 10110 LINE INPUT "Number to Dial ? ";X$
  249. 10120 IF LEN(X$)=1 AND X$=>"A" AND X$<="F" THEN X$=D$(ASC(X$)-64) : RETURN
  250. 10130 IF LEN(X$)=1 AND X$=>"a" AND X$<="f" THEN X$=D$(ASC(X$)-96) : RETURN
  251. 10140 IF LEN(X$)<7 THEN LOCATE ,,1 : RETURN 400 ELSE RETURN
  252. 20000           ' Get Character -----------------------------------------
  253. 20010 Y$=""
  254. 20020 FOR A=1 TO 420
  255. 20030 IF NOT EOF(1) THEN Y$=INPUT$(LOC(1),#1) : RETURN
  256. 20040 NEXT A : Y$="" : RETURN
  257. 21000           ' Timeout -----------------------------------------------
  258. 21010 FOR B = 1 TO 10
  259. 21020 GOSUB 20000
  260. 21030 IF MID$(Y$,1,1)=SOH$ THEN RETURN
  261. 21040 IF MID$(Y$,1,1)=EOT$ THEN 22350
  262. 21050 IF MID$(Y$,1,1)=CAN$ THEN 22360
  263. 21060 IF Y$<>"" THEN GOSUB 25000 : GOTO 21000
  264. 21070 NEXT B
  265. 21080 IF Y$="" THEN PRINT #1,NAK$;
  266. 21090 GOTO 21000
  267. 22000           ' Receive With Xmodem Protocol ---------------------------
  268. 22010 PRINT "Receive File With XMODEM Protocol" : PRINT
  269. 22020 IF EVEN THEN GOSUB 3945      ' Set Word Structure To 8-N-1
  270. 22030 GOSUB 3740                   ' Open File
  271. 22040 GOSUB 25000                  ' Purge Buffer
  272. 22050 X$="" : SEC=1
  273. 22060 PRINT #1,NAK$;
  274. 22070 GOSUB 21000                  ' Timeout
  275. 22080 GOSUB 20000                  ' Get Char
  276. 22090 IF Y$="" THEN PRINT "Timeout" : GOTO 22120
  277. 22100 X$=X$+Y$
  278. 22110 IF LEN(X$)<=131 THEN 22080
  279. 22120 IF LEN(X$)= 132 THEN Z$=MID$(X$,4,128) : N=132 : GOTO 22200
  280. 22130 IF LEN(X$)= 131 THEN Z$=MID$(X$,3,128) : N=131 : GOTO 22200
  281. 22140 IF LEN(X$)> 132 THEN 22310
  282. 22150 IF X$=EOT$      THEN 22350
  283. 22160 IF X$=CAN$      THEN 22360
  284. 22170 GOTO 22300
  285. 22180 IF SEC<> VAL(MID$(X$,2,1) THEN 22330
  286. 22190 IF (SEC XOR 255) <> VAL(MID$(X$,3,1) THEN 22340
  287. 22200 FOR Q=1 TO 128 : CK=CK+ASC(MID$(Z$,Q,1)) : NEXT
  288. 22210 IF (CK AND 255) <> (ASC(MID$(X$,N,1))) THEN 22320
  289. 22220 PRINT "Received #";SEC : SEC=255 AND (SEC+1)
  290. 22230 PRINT #3,Z$;
  291. 22240 PRINT #1,ACK$;
  292. 22250 X$="" : CK=0 : GOTO 22080
  293. 22300 PRINT "Short Block in #"   ;SEC : PRINT #1,NAK$; : GOTO 22250
  294. 22310 PRINT "Long  Block in #"   ;SEC : PRINT #1,NAK$; : GOTO 22250
  295. 22320 PRINT "Checksum Error in #";SEC : PRINT #1,NAK$; : GOTO 22250
  296. 22330 PRINT "Block #  Error in #";SEC : PRINT #1,NAK$; : GOTO 22250
  297. 22340 PRINT "Complement Error in #";SEC:PRINT #1,NAK$; : GOTO 22250
  298. 22350 PRINT "File Closed." : PRINT #1,ACK$; : CLOSE #3 : GOTO 22370
  299. 22360 PRINT "Transfer Aborted at Receiver"  : CLOSE #3
  300. 22370 IF EVEN THEN GOSUB 3935
  301. 22380 RETURN 400
  302. 25000           'Purge Buffer ------------------------------------------
  303. 25010 WHILE NOT EOF(1) : DUMMY$=INPUT$(LOC(1),#1) : WEND : RETURN
  304. 30000           ' Send with Xmodem Protocol -----------------------------------
  305. 30010 PRINT "Send File With XMODEM Protocol" : PRINT
  306. 30020 IF EVEN THEN GOSUB 3945 'Set To N-8-1 Word Structure ********************
  307. 30030 XX=-1 : GOSUB 3820          'Open File
  308. 30040 SEC=0 : GOSUB 25000         'Purge Buffer
  309. 30050 EOT=0 : Y$="" : X$="" : FLN!=LOF(3) : TBLK!=LOF(3)/128 'BJR073183
  310. 30060 BLK=0 : CNT!=0 'BJR073183
  311. 30100 WHILE NOT EOF(1)            'Wait for NAK
  312. 30110    Y$=INPUT$(1,#1)
  313. 30120    IF Y$=CAN$ THEN 30510
  314. 30130    IF Y$=NAK$ THEN 30310
  315. 30140 WEND  : GOTO 30100
  316. 30150 '
  317. 30200 WHILE NOT EOF (1)           ' Wait for ACK
  318. 30210    Y$=INPUT$(1,#1)
  319. 30220    IF Y$=ACK$ THEN CK=0 : Y$="" : GOTO 30300 ' BJR073183
  320. 30230    IF Y$=NAK$ THEN PRINT "RESENDING BLOCK # ",BLK : GOTO 30460 'BJR073183
  321. 30240    IF Y$=CAN$ THEN 30510
  322. 30250 WEND : GOTO 30200
  323. 30260 '
  324. 30300 IF EOT THEN 30500           ' Build and Send Block
  325. 30310 CK=0 : Y$="" : BLK=BLK+1 : CNT!=CNT!+128 : GET #3,BLK : IF CNT!<=FLN! THEN 30330 'BJR073183
  326. 30320 Z$=MID$(Z$,1,128-(CNT!-FLN!))+STRING$(CNT!-FLN!,CHR$(0)) : EOT=-1 'BJR073183
  327. 30330 CK=0 : FOR I=1 TO LEN(Z$) : CK=CK+ASC(MID$(Z$,I,1)) : NEXT : CK = (CK AND 255) 'BJR073183
  328. 30340 IF CK>256 THEN CK=CK-256 : GOTO 30340 ' BJR073183
  329. 30345 ' BJR073183
  330. 30360 ' BJR073183
  331. 30365 ' BJR073183
  332. 30370 ' BJR073183
  333. 30380 ' BJR073183
  334. 30390 ' BJR073183
  335. 30400 ' BJR073183
  336. 30410 ' BJR073183
  337. 30420 ' BJR073183
  338. 30430 ' BJR073183
  339. 30440 SEC=(255 AND BLK) ' BJR073183
  340. 30450 A$=SOH$+CHR$(SEC)+CHR$(SEC XOR 255)+Z$+CHR$(CK) ' BJR073183
  341. 30460 PRINT "Send #";SEC
  342. 30470 PRINT #1,A$;
  343. 30480 GOTO 30200
  344. 30490 ' BJR073183
  345. 30500 PRINT "Transmission Ended." : PRINT #1,EOT$; : CLOSE #3
  346. 30510 IF EVEN THEN GOSUB 3935
  347. 30520 RETURN 400
  348.